/**
 * 实现内置Readonly<T>泛型而不使用它。
 * 构造一个将 T 的所有属性设置为只读的类型，这意味着构造类型的属性不能重新分配。
 * 例如
 */


interface Todo1 {
  title: string
  description: string
}

type MyReadonly<T> = {
  readonly [P in keyof T]:T[P]
}

const myTodo: MyReadonly<Todo1> = {
  title: "Hey",
  description: "foobar"
}


// myTodo.title = "Hello" // Error: cannot reassign a readonly property
// myTodo.description = "barFoo" // Error: cannot reassign a readonly property
